ふつうのLinuxプログラミング 第2版
https://gyazo.com/252e594a0bb20cd3b52b5cf32515c0d1
Linux世界が何によってできているのかを教える本
概念
ファイルシステム
プロセス
ストリーム
バグとデバッグ
Segmention fault
NULLポインタを参照したり、配列の大きさを大きく超えてアクセスしてしまうとエラーになる
gccの最適化にな-o1から-o3まである
o2にしておくと安心らしい
オペレーティングシステム
OSとは実は厳密に意味は決まっていない
裁判の結果によって範囲が大きくかわってしまうテキトーな概念
どっかでダウンロードしたり購入してきたものはOSとは呼ばない(ディストリビューションと呼ぶ)
UNIXには商用UNIXとFree BSDで派閥が別れていた 今ではお互い補完しあっており差分がなくなってきている
OSの核となる部分
ハードウェアとソフトウェアを両方管理しているもの
ハードウェア
CPUとかメモリHDDなどのものをデバイスと呼ぶ
HDDとといっても種類がたくさんある
なので操作する部分だけ独立させて交換可能にしておくほうが便利
これがデバイスドライバ
カーネルに対して仕事をお願いするためのお伺い
基本関数呼び出しにしか見えない
ライブラリ関数
printif()とかexit()とか
libc
標準のCのライブラリが入っている場所
https://gyazo.com/3f381f51838ce0b364681f1acdcc7821
付帯情報
ファイルシステムはどこにあるか
SSDやHDDの中にある
ディスクをパーティションという区切りで区切ってその上にマウントすると巨大なディレクトリツリーができる
動作中のプログラムのこと
プログラムとはファイルのような形態で存在しているデータのことも含む
ps -efコマンドで現在の自分のPCに存在するすべてのプロセスを表示できる
必ず任意のプロセスIDがある。出力された左から2番目
ストリーム
バイト列が流れる通り道
他の書籍ではファイルとかopen fileとかで呼ばれているから覚えておく
https://gyazo.com/2e2440816608a1a8c40521da231f89e9
バイトがストリームできるということはネットワーク通信もできてしまう
マルチユーザーシステム
消してはいけないファイルや消しても困らないファイルを1人向けだと権限がないので簡単に消せてしまうのでよくない
UNIX時代にパソコンは高価だったため1台のパソコンに複数人がログインするのが普通だったのでLinuxもそうなっている
読み込み、書き込み、実行
ls -l
所有ユーザー、所有グループ、その他の順番にパーミッションが表示される
アクセス権限
ユーザーAがアクセスするとは
ユーザーAの属性を持ったプロセスがアクセスすること
プロセス郡を操作する
このユーザーAの属性がクレデンシャル
ユーザー名とユーザーIDは/etc/passwdに書いてある